package com.wuba.rxjavademo.tzx.map;

import com.wuba.rxjavademo.tzx.common.Base;

import rx.functions.Func2;

/**
 * Created by tanzhenxing
 * Date: 2016/6/27.
 * Description:
 * Scan 操作符对原始Observable发射的第一项数据应用一个函数，然后将那个函数的结果作为
 自己的第一项数据发射。它将函数的结果同第二项数据一起填充给这个函数来产生它自己的
 第二项数据。它持续进行这个过程来产生剩余的数据序列。这个操作符在某些情况下被叫
 做累加器
 */
public class RxScan extends Base {
    public static void main(String[] args) {
        RxScan scan = new RxScan();
        scan.run();
    }

    @Override
    public void run() {
        getObservable()
                .scan(new Func2<Integer, Integer, Integer>() {
                    @Override
                    public Integer call(Integer integer, Integer integer2) {
                        System.out.println(integer + "----" + integer2);
                        return integer > integer2 ? integer : integer2;
                    }
                })
                .subscribe(Base::print);
    }
}
